//
//  NSDate+WN.h
//  Whatnet_iOS
//
//  Created by 北辰 on 2019/5/20.
//  Copyright © 2019 什么网络. All rights reserved.
//



NS_ASSUME_NONNULL_BEGIN

@interface NSDate (WN)/// 获取指定date的详细信息
@property (readonly) NSInteger wn_year;    // 年
@property (readonly) NSInteger wn_month;   // 月
@property (readonly) NSInteger wn_day;     // 日
@property (readonly) NSInteger wn_hour;    // 时
@property (readonly) NSInteger wn_minute;  // 分
@property (readonly) NSInteger wn_second;  // 秒
@property (readonly) NSInteger wn_weekday; // 星期

/** 创建 date */
/** yyyy */
+ (nullable NSDate *)wn_setYear:(NSInteger)year;
/** yyyy-MM */
+ (nullable NSDate *)wn_setYear:(NSInteger)year month:(NSInteger)month;
/** yyyy-MM-dd */
+ (nullable NSDate *)wn_setYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day;
/** yyyy-MM-dd HH:mm */
+ (nullable NSDate *)wn_setYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day hour:(NSInteger)hour minute:(NSInteger)minute;
/** MM-dd HH:mm */
+ (nullable NSDate *)wn_setMonth:(NSInteger)month day:(NSInteger)day hour:(NSInteger)hour minute:(NSInteger)minute;
/** MM-dd */
+ (nullable NSDate *)wn_setMonth:(NSInteger)month day:(NSInteger)day;
/** HH:mm */
+ (nullable NSDate *)wn_setHour:(NSInteger)hour minute:(NSInteger)minute;
/** 获取自1970以来的毫秒 */
+ (NSString *)wn_getmillSecoundForm1070:(NSDate *)date;

/** 日期和字符串之间的转换：NSDate --> NSString */
+ (nullable  NSString *)wn_getDateString:(NSDate *)date format:(NSString *)format;
/** 日期和字符串之间的转换：NSString --> NSDate */
+ (nullable  NSDate *)wn_getDate:(NSString *)dateString format:(NSString *)format;
/** 获取某个月的天数（通过年月求每月天数）*/
+ (NSUInteger)wn_getDaysInYear:(NSInteger)year month:(NSInteger)month;

/**  获取 日期加上/减去某天数后的新日期 */
- (nullable NSDate *)wn_addDays:(NSTimeInterval)days;




/**
 *  比较两个时间大小（可以指定比较级数，即按指定格式进行比较）
 */
- (NSComparisonResult)wn_compare:(NSDate *)targetDate format:(NSString *)format;


#pragma mark - 包含星期几 日期和字符串之间的转换：NSDate --> NSString yyyy-mm-dd week HH:MM
+ (NSString *)wn_getDateWeekString:(NSDate *)date;

/**
 *  根据毫秒时间戳获取年龄
 */
+ (NSInteger)wn_getAgeWithMillisecondM:(long long)millisecond;
/**
 *  根据date获取年龄
 */
+ (NSInteger)wn_getAgeWithDate:(NSDate *)date;

+ (NSString *)formatTime:(NSTimeInterval)timeInterval;


//时间戳转事件
+ (NSString *)getTimestring:(NSTimeInterval)timeInterval format:(NSString *)format;

//获取当前时间
+(NSString *)getNowTimeTimestamp;

//时间对比
+(NSTimeInterval)pleaseInsertStarTime:(NSDate *)startDate andInsertEndTime:(NSDate *)endDate;

@end

NS_ASSUME_NONNULL_END
